package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Result;
import org.jsola.hr.dto.AttendPunchDTO;
import org.jsola.hr.query.AttendPunchCheckQuery;
import org.jsola.hr.vo.AttendPunchCheckSimpleVO;
import org.jsola.hr.vo.AttendPunchVO;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * @author wxz
 */
@Api(tags = "hr-考勤打卡")
public interface IAttendPunchControllerAPI {

    /**
     * 检查考勤打卡
     *
     * @param attendPunchCheckQuery 检查考勤打卡参数
     * @return Result<AttendPunchCheckVO>
     */
    @ApiOperation(value="检查考勤打卡")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "attendPunchCheckQuery", dataType = "AttendPunchCheckQuery", value = "检查考勤打卡", paramType = "body")
    })
    Result<AttendPunchCheckSimpleVO> checkPunch(AttendPunchCheckQuery attendPunchCheckQuery);

    /**
     * 考勤打卡
     *
     * @param attendPunchDTO 考勤打卡
     * @return
     */
    @ApiOperation(value = "考勤打卡")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "attendPunchDTO", dataType = "AttendPunchDTO", value = "考勤打卡", paramType = "body")
    })
    Result<AttendPunchVO> punch(AttendPunchDTO attendPunchDTO);

    /**
     * 模拟批量考勤打卡
     *
     * @param attendPunchDTO 考勤打卡参数
     * @return
     */
    @ApiOperation(value = "模拟批量考勤打卡")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "attendPunchDTO", dataType = "AttendPunchDTO", value = "考勤打卡参数", paramType = "body")
    })
    Result<AttendPunchVO> punchBatchSimulation(@RequestBody AttendPunchDTO attendPunchDTO);

}
